CC = arm-linux-gcc
LD = arm-linux-ld
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
AR = arm-linux-ar

#获取当前路径
INCDIR  := $(shell pwd)

#C预处理器的flag，flag就是编译器的可选的选项
# -nostdlib 告诉编译器不用标准的函数库， 因为标准的输出是屏幕，这里需要的是串口
# -nostdinc 不用标准的头文件(inc= include)
# -I 指定库目录
CPPFLAGS := -nostdlib  -nostdinc -I$(INCDIR)/include

#C编译器的flag，Wall需要警告信息   -O2代码优化等级
CFLAGS := -Wall -O2 -fno-builtin

# 导出变量到全局，给子文件夹的makefile使用
export CC LD OBJCOPY OBJDUMP AR CPPFLAGS CFLAGS

objs :=  start.o led.o clock.o uart.o main.o key.o interrupt.o
objs += lib/libc.a

led.bin: $(objs)
	$(LD) -Tlink.lds -o led.elf $^
	$(OBJCOPY) -O binary led.elf led.bin
	$(OBJDUMP) -D led.elf > led_elf.dis
	gcc mkv210_image.c -o mkx210
	./mkx210 led.bin 210.bin

lib/libc.a :
	cd lib ; make ; cd ..

%.o : %.S
	#删除 -nostdlib
	$(CC)  $(CPPFLAGS) $(CFLAGS) -o $@ $< -c

%.o : %.c
	#删除 -nostdlib
	$(CC)  $(CPPFLAGS) $(CFLAGS) -o $@ $< -c

clean:
	rm *.o *.elf *.bin *.dis mkx210 -f
	cd lib ;  make clean ; cd ..

	
	